Data object extensibility

ABSTRACT

A system for creating a custom field type comprises an input interface, a processor, and an output interface. The input interface is configured to receive an indication to create a custom field type. The processor is configured to validate a parameter of the custom field type. The output interface is configured to provide the custom field type for creating a custom field of a custom object.

CROSS REFERENCE TO OTHER APPLICATIONS

This application is a continuation of co-pending U.S. patent applicationSer. No. 13/793,903, entitled DATA OBJECT EXTENSIBILITY filed Mar. 11,2013 which is incorporated herein by reference for all purposes.

BACKGROUND OF THE INVENTION

In an object based database system, software objects correspond toreal-life entities. For example, a worker object comprises informationdescribing a worker (e.g., worker name, title, salary, etc.) andrelationships to other business objects (e.g., supervisors,subordinates, business locations, etc.). A developer designing theobject based database system can preload the system with a set ofobjects representing common business entities, in order to cover thebasic needs of a typical business. However, many businesses have specialcircumstances, which cannot be addressed using the available objects orconfigurations of the objects.

BRIEF DESCRIPTION OF THE DRAWINGS

Various embodiments of the invention are disclosed in the followingdetailed description and the accompanying drawings.

FIG. 1 is a block diagram illustrating an embodiment of a networksystem.

FIG. 2 is a block diagram illustrating an embodiment of an object datastructure.

FIG. 3 is a block diagram illustrating an embodiment of a data structurefor an object tree.

FIG. 4 is a diagram illustrating an embodiment of a create custom objectwindow.

FIG. 5 is a diagram illustrating an embodiment of a create custom fieldwindow.

FIG. 6 is a diagram illustrating an embodiment of a select custom fieldtype window.

FIG. 7 is a diagram illustrating an embodiment of a create customcurrency field type window.

FIG. 8 is a diagram illustrating an embodiment of a create customdecimal field type window.

FIG. 9 is a diagram illustrating an embodiment of a create custominteger field type window.

FIG. 10 is a diagram illustrating an embodiment of a create custom textfield type window.

FIG. 11 is a diagram illustrating an embodiment of a create custom listfield type window.

FIG. 12 is a diagram illustrating an embodiment of a validation errorfor a custom currency field type.

FIG. 13 is a flow diagram illustrating an embodiment of a process forcreating a custom field type.

FIG. 14 is a flow diagram illustrating an embodiment of a process forvalidating one or more parameters of a custom field type.

DETAILED DESCRIPTION

The invention can be implemented in numerous ways, including as aprocess; an apparatus; a system; a composition of matter; a computerprogram product embodied on a computer readable storage medium; and/or aprocessor, such as a processor configured to execute instructions storedon and/or provided by a memory coupled to the processor. In thisspecification, these implementations, or any other form that theinvention may take, may be referred to as techniques. In general, theorder of the steps of disclosed processes may be altered within thescope of the invention. Unless stated otherwise, a component such as aprocessor or a memory described as being configured to perform a taskmay be implemented as a general component that is temporarily configuredto perform the task at a given time or a specific component that ismanufactured to perform the task. As used herein, the term ‘processor’refers to one or more devices, circuits, and/or processing coresconfigured to process data, such as computer program instructions.

A detailed description of one or more embodiments of the invention isprovided below along with accompanying figures that illustrate theprinciples of the invention. The invention is described in connectionwith such embodiments, but the invention is not limited to anyembodiment. The scope of the invention is limited only by the claims andthe invention encompasses numerous alternatives, modifications andequivalents. Numerous specific details are set forth in the followingdescription in order to provide a thorough understanding of theinvention. These details are provided for the purpose of example and theinvention may be practiced according to the claims without some or allof these specific details. For the purpose of clarity, technicalmaterial that is known in the technical fields related to the inventionhas not been described in detail so that the invention is notunnecessarily obscured.

A system for creating a custom field type comprises an input interfaceconfigured to receive an indication to create a custom field type, aprocessor configured to validate a parameter of the custom field type,and an output interface configured to provide the custom field type forcreating a custom field of a custom object. The system for creating acustom field type additionally comprises a memory coupled to theprocessor and configured to provide the processor with instructions.

A system for data object extensibility comprises an object baseddatabase system comprising a set of data objects. A data objectcomprises attributes (e.g., data describing the object), relations(e.g., connections to other data objects); and methods (e.g., softwarefor operating on the attributes and relations). A database systemmanager may decide it is necessary to extend an object—for instance toadd new attributes to a worker object, if it is determined necessary tostore new data describing the worker. For example, a company thatrequires its employees to have their fingerprints on file would want tostore as part of a worker object information describing when afingerprint was taken, when it was submitted to a national fingerprintdatabase, what the results were, etc. A company requiring a securityclearance would want to store information describing when the clearancewas applied for, what the results were, what level of clearance anemployee has, etc. The company can add this information by creating anew object that extends the worker object, and has associated with itthe data fields desired.

In some embodiments, in order to make data object extensibility asflexible and as powerful as possible, a new object is created using notonly the existing data types, but also using custom data types createdspecifically for the new object. Custom data types can include numericdata types with user-defined range and precision, a text data type withuser-defined length, or a list data type with user-defined listelements. A list data type will allow a customer to specify a set ofvalues for the field that can be chosen between. For example, a listtype describing an employee security clearance might give a choice of NoClearance, Confidential, Secret, or Top Secret. A custom data typecreator allows a custom data type to be created, validates the customdata type, and provides the custom data type to the custom objectcreator.

FIG. 1 is a block diagram illustrating an embodiment of a networksystem. In the example shown, the network system comprises databasesystem administrator 102, database system user 104, and database system106, communicating via network 100. In various embodiments, network 100comprises one or more of the following: a local area network, a widearea network, a wired network, a wireless network, the Internet, or anyother appropriate network. Database system 106 comprises a databasesystem for storage and retrieval of information. In some embodiments,database system 106 comprises a system for analysis of information. Insome embodiments, database system 106 comprises a distributed database,e.g., a database system comprising multiple computers not necessarily inthe same location. In some embodiments, database system 106 comprises asystem for executing business processes. In some embodiments, databasesystem 106 comprises a system for an object-oriented database. In someembodiments, database system 106 comprises a system for data objectextensibility.

Database system administrator 102 comprises a database systemadministrator administrating database system 106. In some embodiments,database system administrator 102 comprises an employee at a companypurchasing database system services. In some embodiments, administratingdatabase system 106 comprises preparing, configuring, or modifyingdatabase system 106 as desired by database system users (e.g., databasesystem user 104). In some embodiments, database system administrator 102configures and modifies database system 106 in ways not available todatabase system user 104. In some embodiments, database systemadministrator 102 extends objects of database system 106. In someembodiments, database system administrator 102 creates custom objectsfor database system 106. In some embodiments, database systemadministrator 102 creates custom fields for database system 106.Database system user 104 comprises a database user accessing databaseservices on database system 106. In some embodiments, database systemuser 104 comprises a user who uses a user interface (e.g., a keyboard, atouch screen, a display, etc.) to interact with database system 106. Invarious embodiments, the user interface is associated with a desktopcomputer, a laptop computer, a local terminal, or any other appropriatesystem with a user interface. In some embodiments, database system user104 comprises an employee at a company purchasing database systemservices. In various embodiments, there are 1, 2, 4, 13, 22, 115, or anyother appropriate number of database system users accessing databaseservices on database system 106. In some embodiments, each databasesystem user only has access to their own data stored on database system106 and is able to utilize database system 106 as though they are thesole database system user. In some embodiments, database system user 104configures services on database system 106. In some embodiments, theability of database system user 104 to configure database system 106 islimited compared with that of database system administrator 102. In someembodiments, a database system user (e.g., database system user 104)comprises a person accessing database system 106 via a user interface,e.g., a web page. In some embodiments, a database system user comprisesan automated system accessing database system 106 via a machineinterface, e.g., a public application programming interface (API).

FIG. 2 is a block diagram illustrating an embodiment of an object datastructure. In some embodiments, stored data (e.g., data stored indatabase system 106 of FIG. 1) is stored in object data structures ofFIG. 2. In the example shown, object 200 is comprised of zero, one, ormore than one attributes 202, zero, one, or more than one relations 204,and zero, one, or more than one methods 206. Attributes 202 store dataabout the object, for instance, name, location, salary, title, cost,vendor, or any other human resource, corporate, financial, legal, ormedical data, or any other appropriate data. Relations 204 storerelations between a given instance of object 200 and other instances ofthe object or of other objects. Methods 206 define operations that canbe performed with the attributes and relations. A given objectdefinition has a certain set of attributes and relations, as well as acertain set of methods used to operate on those attributes andrelations. A given instance of an object definition comprises a set ofstored values for the attributes and relations.

In some embodiments, objects can inherit from one another. When a childobject inherits from a parent object, it takes on the definition of theparent object. The definition of the child object can then be extendedby adding or overwriting methods, attributes, or relations. In someembodiments, objects are defined as part of software sold by a systemvendor and maintained by a database system administrator (e.g., databasesystem administrator 102 of FIG. 1). In some embodiments, a systemadministrator can create new objects as desired in order to customizeand/or extend the software sold by the system vendor.

FIG. 3 is a block diagram illustrating an embodiment of a data structurefor an object tree. In some embodiments, the object tree of FIG. 3 maycomprise stored data in a database system (e.g., database system 106 ofFIG. 1). In some embodiments, objects 300, 302, 304, 306, 308, and 310comprise instances of object data structures as shown in FIG. 2. In someembodiments, relations 320, 322, 324, 326, and 328 comprise relations(e.g., relations 204 of FIG. 2). In the example shown, the objectinstances of FIG. 3 describe part of a business data structure.Organization 300 has relation 320 to business site object instance 302.Business site object instance 302 contains the name of the site at whichthe organization resides. Organization 300 also has relation 322 toemployee object instances including employee object instance 304, eachrepresenting an employee that is part of the organization. Employeeobject instance 304 has relation 324, relation 326, and relation 328 tojob profile object instance 306, salary object instance 308, and nameobject instance 310, respectively. Job profile object instance 306includes job profile attributes corresponding to employee 304. Salaryobject instance 308 includes salary attributes corresponding to employee304. Name object instance 310 includes name attributes corresponding toemployee 304. In this way, data can be stored in a way representing theorganizational structure of the company. In some embodiments, programscan access and store attribute data by traversing the object tree alongthe connections between object instances given by relationships, andoperate on the stored attribute data to create a meaningful report aboutthe organization.

FIG. 4 is a diagram illustrating an embodiment of a create custom objectwindow. In some embodiments, create custom object window 400 comprises acreate custom object window for a database system administrator (e.g.,database system administrator 102 of FIG. 1) to create a custom objectextending an existing object. In the example shown, business object toextend field 402 comprises an input field for specifying a businessobject to extend. For example, if a database system administrator wishesto add fields to a worker object, he would select the worker object asthe business object to extend. In some embodiments, not all businessobjects are available to extend. Custom object name field 404 comprisesa field for specifying the custom object name. Web service alias field406 comprises a field for specifying a web service alias for the object.In some embodiments, the object based database is accessible via amachine interface using a web service. The web service includes apredefined interface for the machine interface to use to retrieve data.When a custom object is created, it needs a new web service alias sothat it can be retrieved via the web service. Allow multiple instancescheckbox 408 comprises a checkbox for specifying if multiple instancesof the custom object will be allowed. In some embodiments, multipleinstances of the custom object can be used to specify multiple copies ofthe same data field for a given object. For instance, a custom objectthat extends the worker object to include fingerprint data fields mayrequire multiple copies to exist if the fingerprint data is taken andsent to the fingerprint database multiple times. Display value field 410comprises a field for specifying a data value that will be used todistinguish multiple instances of the custom object in a report (e.g.,date created). Reference ID field 412 comprises a field for specifying adata value that will be used to distinguish multiple instances of thecustom object in a web service request.” Security domain field 413comprises a field for specifying one or more security domains for thecustom object. In some embodiments, a security domain indicates a set ofemployees authorized to view and/or modify the object. Save button 414comprises a save button for saving progress creating the custom object.In some embodiments, save button 414 saves custom object creationprogress and takes the user to the next custom object creation screen.

FIG. 5 is a diagram illustrating an embodiment of a create custom fieldwindow. In some embodiments, create custom field window 500 comprises acreate custom field window for a database system administrator (e.g.,database system administrator 102 of FIG. 1) to create a custom fieldfor a custom object. In the example shown, field name field 502comprises a field for entering a custom field name. Field type field 504comprises a field for selecting a field type. In some embodiments, fieldtype field 504 comprises a field for selecting a custom field type.Field validations field 506 comprises a field for entering a fieldvalidation (e.g., for indicating that the field is required to have avalue). Field ordering field 508 comprises a field for indicating afield ordering (e.g., the ordering that the field is displayed). Webservice alias 510 comprises a field for entering a web service alias forthe field. Field category field 512 comprises a field for selecting acategory for the field. In some embodiments, fields are sorted intofield categories. In some embodiments, field category field 512 defaultsto “Custom Fields Save button 516 comprises a save button for savingprogress creating the custom field. Next field button 518 comprises anext field button for creating another new custom field for the customobject.

FIG. 6 is a diagram illustrating an embodiment of a select custom fieldtype window. In some embodiments, select custom field type window 600comprises a select custom field type window for a database systemadministrator (e.g., database system administrator 102 of FIG. 1) toselect a custom field type to begin creating a custom field type. In theexample shown, currency button 602 begins creating a custom currencyfield type, decimal button 604 begins creating a custom decimal fieldtype, integer button 606 begins creating a custom integer field type,list button 608 begins creating a custom list field type, and textbutton 610 begins creating a custom text field type. View existingcustom field types button 612 displays a list of existing custom fieldtypes.

FIG. 7 is a diagram illustrating an embodiment of a create customcurrency field type window. In some embodiments, create custom currencyfield type window 700 comprises a create custom currency field typewindow for a database system administrator (e.g., database systemadministrator 102 of FIG. 1) to create a custom currency field type. Inthe example shown, custom field type name field 702 comprises a customfield type name field for entering a custom field type name. Web servicealias field 704 comprises a web service alias field for entering a webservice alias. In some embodiments, the web service alias must be analphanumeric text string with no spaces. Minimum currency value field706 comprises a minimum currency value field for entering a minimumcurrency value. In some embodiments, the minimum currency value must bein the range of −9,223,372,036,854,775,808 to 9,223,372,036,854,775,807.Maximum currency value field 708 comprises a maximum currency valuefield for entering a maximum currency value. In some embodiments, themaximum currency value must be in the range of−9,223,372,036,854,775,808 to 9,223,372,036,854,775,807, and must belarger than the minimum currency value. Currency precision value field710 comprises a currency precision value field for entering a currencyprecision value. In some embodiments, the currency precision value mustbe in the range of 0 to 3. Inactive checkbox 712 comprises a checkboxfor indicating if the custom currency field type is inactive (e.g., itcannot be used). Save button 714 comprises a save button for saving thecustom currency field type.

FIG. 8 is a diagram illustrating an embodiment of a create customdecimal field type window. In some embodiments, create custom decimalfield type window 800 comprises a create custom decimal field typewindow for a database system administrator (e.g., database systemadministrator 102 of FIG. 1) to create a custom decimal field type. Inthe example shown, custom field type name field 802 comprises a customfield type name field for entering a custom field type name. Web servicealias field 804 comprises a web service alias field for entering a webservice alias. In some embodiments, the web service alias must be analphanumeric text string with no spaces. Minimum decimal value field 806comprises a minimum decimal value field for entering a minimum decimalvalue. In some embodiments, the minimum decimal value must be in therange of −9,223,372,036,854,775,808 to 9,223,372,036,854,775,807.Maximum decimal value field 808 comprises a maximum decimal value fieldfor entering a maximum decimal value. In some embodiments, the maximumdecimal value must be in the range of −9,223,372,036,854,775,808 to9,223,372,036,854,775,807, and must be larger than the minimum decimalvalue. Decimal precision value field 810 comprises a decimal precisionvalue field for entering a decimal precision value. In some embodiments,the decimal precision value must be in the range of 0 to 3. Inactivecheckbox 812 comprises a checkbox for indicating if the custom decimalfield type is inactive (e.g., it cannot be used). Save button 814comprises a save button for saving the custom decimal field type.

FIG. 9 is a diagram illustrating an embodiment of a create custominteger field type window. In some embodiments, create custom integerfield type window 900 comprises a create custom integer field typewindow for a database system administrator (e.g., database systemadministrator 102 of FIG. 1) to create a custom integer field type. Inthe example shown, custom field type name field 902 comprises a customfield type name field for entering a custom field type name. Web servicealias field 904 comprises a web service alias field for entering a webservice alias. In some embodiments, the web service alias must be analphanumeric text string with no spaces. Minimum integer value field 906comprises a minimum integer value field for entering a minimum integervalue. In some embodiments, the minimum integer value must be in therange of −2,147,483,648 to 2,124,483,647. Maximum integer value field908 comprises a maximum integer value field for entering a maximuminteger value. In some embodiments, the maximum integer value must be inthe range of −2,147,483,648 to 2,124,483,647, and must be larger thanthe minimum integer value. Inactive checkbox 910 comprises a checkboxfor indicating if the custom integer field type is inactive (e.g., itcannot be used). Save button 912 comprises a save button for saving thecustom integer field type.

FIG. 10 is a diagram illustrating an embodiment of a create custom textfield type window. In some embodiments, create custom text field typewindow 1000 comprises a create custom text field type window for adatabase system administrator (e.g., database system administrator 102of FIG. 1) to create a custom text field type. In the example shown,custom field type name field 1002 comprises a custom field type namefield for entering a custom field type name. Web service alias field1004 comprises a web service alias field for entering a web servicealias. In some embodiments, the web service alias must be analphanumeric text string with no spaces. Maximum text length field 1006comprises a maximum text length field for entering a maximum textlength. In some embodiments, the maximum text length is 255 characters.Inactive checkbox 1008 comprises a checkbox for indicating if the customtext field type is inactive (e.g., it cannot be used). Save button 1010comprises a save button for saving the custom text field type.

FIG. 11 is a diagram illustrating an embodiment of a create custom listfield type window. In some embodiments, create custom list field typewindow 1100 comprises a create custom list field type window for adatabase system administrator (e.g., database system administrator 102of FIG. 1) to create a custom list field type. In the example shown,custom field type name field 1102 comprises a custom field type namefield for entering a custom field type name. Web service alias field1104 comprises a web service alias field for entering a web servicealias. In some embodiments, the web service alias must be analphanumeric text string with no spaces. Inactive checkbox 1106comprises a checkbox for indicating if the custom list field type isinactive (e.g., it can not be used). List values box 1108 comprises alist values box for entering a set of list values for the custom listfield type. Each list value for the custom list field type comprises alist value name (e.g., list value name 1112), a web service alias (e.g.,web service alias 1114), and a position in the ordering within the setof list values. The ordering can be changed for a given list value usingits associated ordering buttons (e.g., ordering buttons 1110). In someembodiments, each list value name and web service alias must be uniquefor a given custom list type. In some embodiments, a custom list typehas a maximum of 100 list values. Save button 1116 comprises a savebutton for saving the custom list field type.

FIG. 12 is a diagram illustrating an embodiment of a validation errorfor a custom currency field type. In the example shown, a value of 5 hasbeen entered into the currency precision value field in the createcustom currency field type screen. The maximum currency precision valueis 3, so the custom currency field type is not validated. Until thecustom currency field type screen is validated (e.g., all fields containlegal values), the custom currency field type cannot be saved.

FIG. 13 is a flow diagram illustrating an embodiment of a process forcreating a custom field type. In some embodiments, the process of FIG.13 is executed by a database system (e.g., database system 106 ofFIG. 1) interacting with a database system administrator (e.g., databasesystem administrator 102 of FIG. 1). In the example shown, in 1300, anindication to create a custom field type is received. In 1302, one ormore available kinds of the custom field type are provided. In 1304, anindication is received of a selected kind of the one or more availablekinds of the custom field type. In 1306, a form is provided based atleast in part on the selected kind, wherein the form prompts forparameters of the custom field type. In 1308, the parameter of thecustom field type is received. In some embodiments, one or moreparameters of a custom field type are received. In 1310, the parameterof the custom field type is validated. In some embodiments, one or moreparameters of the custom field type are validated. In 1312, the customfield type is provided for creating a custom field of a custom object.

FIG. 14 is a flow diagram illustrating an embodiment of a process forvalidating one or more parameters of a custom field type. In someembodiments, the process of FIG. 14 implements 1310 of FIG. 13. In theexample shown, in 1400, the next parameter is selected. In someembodiments, the next parameter comprises the first parameter. In 1402,it is determined whether the parameter comprises a numeric parameter ora text parameter. If it is determined that the parameter comprises anumeric parameter, control passes to 1404. In 1404, it is determinedwhether there are bounds on the numeric parameter range. If it isdetermined that there are not bounds on the numeric parameter range,control passes to 1416. If it is determined that there are bounds on thenumeric parameter range, control passes to 1406. In 1406, it isdetermined whether the parameter is within the bounds on the numericparameter range. If it is determined that the parameter is within thebounds on the numeric parameter range, control passes to 1416. If it isdetermined that the parameter is not within the bounds on the numericparameter range, control passes to 1408. In 1408, the custom field typeis rejected. The process then ends.

If it is determined in 1402 that the parameter comprises a textparameter, control passes to 1410. In 1410 it is determined whetherthere are restrictions on the text. In various embodiments, restrictionson the text comprise restrictions on the text length, restrictions onthe text character set (e.g., only alphanumeric characters, etc.), orany other appropriate restrictions on the text. If it is determined thatthere are not restrictions on the text, control passes to 1416. If it isdetermined that there are restrictions on the text, control passes to1412. In 1412, it is determined whether the parameter meets therestrictions. If it is determined in 1412 that the parameter meets therestrictions, control passes to 1416. If it is determined in 1412 thatthe parameter does not meet the restrictions, control passes to 1414. In1414, the custom field type is rejected. The process then ends.

In 1416, it is determined whether there are more parameters. If it isdetermined that there are more parameters, control passes to 1400. If itis determined that there are not more parameters, control passes to1418. In 1418, the custom field type is validated, and the process ends.

Although the foregoing embodiments have been described in some detailfor purposes of clarity of understanding, the invention is not limitedto the details provided. There are many alternative ways of implementingthe invention. The disclosed embodiments are illustrative and notrestrictive.

What is claimed is:
 1. (canceled)
 2. A system for creating a customfield type, comprising: an input interface configured to: receive anindication to create a custom field type; a processor configured to:validate a parameter of the custom field type, wherein the custom fieldtype comprises a decimal type; and an output interface configured to:provide the custom field type for creating a custom field of a customobject.
 3. The system of claim 2, wherein the output interface isfurther configured to provide one or more available kinds of the customfield type.
 4. The system of claim 2, wherein the input interface isfurther configured to receive an indication of a selected kind of one ormore available kinds of the custom field type.
 5. The system of claim 2,wherein: the input interface is further configured to receive anindication of a selected kind of one or more available kinds of thecustom field type; the output interface is further configured to providea form based at least in part on the selected kind; and the form promptsfor parameters of the custom field type.
 6. The system of claim 2,wherein the input interface is further configured to receive theparameter of the custom field type.
 7. The system of claim 2, whereinthe parameter is one of a plurality of parameters.
 8. The system ofclaim 2, wherein the parameter of the custom field type furthercomprises a field name.
 9. The system of claim 2, wherein the parameterof the custom field type further comprises a web service alias.
 10. Thesystem of claim 2, wherein the custom field type further comprises acurrency type.
 11. The system of claim 2, wherein: the custom field typefurther comprises a currency type; and the parameter of the currencytype comprises one of the following: a minimum value, a maximum value,or a precision.
 12. The system of claim 2, wherein the parameter of thedecimal type comprises one of the following: a minimum value, a maximumvalue, or a precision.
 13. The system of claim 2, wherein the customfield type further comprises an integer type.
 14. The system of claim 2,wherein: the custom field type further comprises an integer type; andthe parameter of the integer type comprises one of the following: aminimum value or a maximum value.
 15. The system of claim 2, wherein thecustom field type further comprises a text type.
 16. The system of claim2, wherein: the custom field type further comprises a text type; and theparameter of the text type comprises a maximum length.
 17. The system ofclaim 2, wherein the custom field type further comprises a list type.18. The system of claim 2, wherein: the custom field type furthercomprises a list type; and the parameter of the list type comprises oneor more list values.
 19. The system of claim 2, wherein: the customfield type further comprises a list type; the parameter of the list typecomprises one or more list values; and one of the one or more listvalues comprises a list value name.
 20. The system of claim 2, wherein:the custom field type further comprises a list type; the parameter ofthe list type comprises one or more list values; and one of the one ormore list values comprises a list value web service alias.
 21. A methodfor creating a custom field type, comprising: receiving an indication tocreate a custom field type; validating, using a processor, a parameterof the custom field type, wherein the custom field type comprises adecimal type; and providing the custom field type for creating a customfield of a custom object.
 22. A computer program product for creating acustom field type, the computer program product being embodied in atangible computer readable storage medium and comprising computerinstructions for: receiving an indication to create a custom field type;validating, using a processor, a parameter of the custom field type,wherein the custom field type comprises a decimal type; and providingthe custom field type for creating a custom field of a custom object.